#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Time       :   15:51
# Author     : Y4
# Site       : 
# File       : 001 正则介绍.py
# Software   : PyCharm


'''
1. 给定的字符串是否符合正则表达式
2. 通过正则表达式,从字符串获取想要的特定部分


基础
    .   任意字符
    []  范围
    |   或者
    ()  一组


量词
    *       >=0
    +       >=1
    ?       0,1
    {m}     =m
    {m,}    >=m
    {m,n}   >=m <=n


预定义
    \s      space
    \S      not space
    \d      digit
    \D      not digit
    \w      word       = [0-9a-zA-Z]
    \W      not word   = [^0-9a-zA-Z]
    \b      匹配一个单词边界，也就是指单词和空格间的位置。例如， 'er\b' 可以匹配"never" 中的 'er'，但不能匹配 "verb" 中的 'er'
    \B      匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er'，但不能匹配 "never" 中的 'er'。

分组
    () ---> group(1)
    number
        (\w+)(\d+)  group(1)    group(2)
        引用
        (\w+)(\d+)  \1  \2      表示引用前面的内容
    name
        (?P<name>\w+)       (?P=name)

贪婪边为非贪婪(尽可能的少匹配字符)
    *?
    ??
    +?
    {m,n}?



'''

import re

msg = '娜扎热巴戴斯佟丽娅'
pattern = re.compile('佟丽娅')
result = pattern.match(msg)  # 没有匹配
print(result)  # none

# 使用正则模块
# match  从开头匹配,只要不成功就返回none
result = re.match('佟丽娅', msg)
print(result)  # none

result = re.search('佟丽娅', msg)
print(result)  # <_sre.SRE_Match object; span=(6, 9), match='佟丽娅'>
print(result.span())  # (6, 9)        位置
print(result.group())  # 佟丽娅         提取匹配的内容部分
